package com.ruoyi.system.service;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.system.domain.DevelopmentTop;
import org.springframework.web.bind.annotation.RequestBody;

/**
 * 发展量排名Service接口
 * 
 * @author ruoyi
 * @date 2025-08-05
 */
public interface IDevelopmentTopService 
{
    /**
     * 查询发展量排名
     * 
     * @param id 发展量排名主键
     * @return 发展量排名
     */
    public DevelopmentTop selectDevelopmentTopById(Long id);

    /**
     * 查询发展量排名列表
     * 
     * @param developmentTop 发展量排名
     * @return 发展量排名集合
     */
    public List<DevelopmentTop> selectDevelopmentTopList(DevelopmentTop developmentTop);

    /**
     * 新增发展量排名
     * 
     * @param developmentTop 发展量排名
     * @return 结果
     */
    public int insertDevelopmentTop(DevelopmentTop developmentTop);

    /**
     * 修改发展量排名
     * 
     * @param developmentTop 发展量排名
     * @return 结果
     */
    public int updateDevelopmentTop(DevelopmentTop developmentTop);

    /**
     * 批量删除发展量排名
     * 
     * @param ids 需要删除的发展量排名主键集合
     * @return 结果
     */
    public int deleteDevelopmentTopByIds(Long[] ids);

    /**
     * 删除发展量排名信息
     * 
     * @param id 发展量排名主键
     * @return 结果
     */
    public int deleteDevelopmentTopById(Long id);

    /**
     * 导入数据
     */
    public String importDevelopmentTop(List<DevelopmentTop> developmentTopList, Boolean isUpdateSupport, String operName);

    public List<DevelopmentTop> selectDevelopmentTopListOrder(Long deptId);
    public List<DevelopmentTop> selectDevelopmentTopDetail(Long deptId, String targetTime);
    public List<Map<String, Object>> selectDevelopmentTop(Long deptId, String targetTime);
    public List<Map<String, Object>> selectCommunitytotal(Long deptId);

    public List<DevelopmentTop> getTotal(DevelopmentTop developmentTop);

    /**
     * 查询所有营业部并调用getTotal方法
     * @param descending 排序方向，true为从高到低，false为从低到高
     * @param deptId 部门ID
     * @param targetTime 目标时间
     * @return 所有营业部的统计数据列表
     */
    public List<DevelopmentTop> getAllBusinessDepartmentTotals(boolean descending,Long deptId, Date targetTime);

    /**
     * 查询指定四个小区的实时发展量和目标值
     * 
     * @param targetTime 目标时间
     * @return 四个小区的详细数据列表
     */
    public List<Map<String, Object>> getSpecificCommunitiesData(String targetTime);

    /**
     * 查询四个小区的各项套餐总和以及目标总和
     *
     * @param targetTime 活动日期
     * @return 包含套餐总和与目标总和的Map
     */
    public Map<String, Object> getFourCommunitiesPackageSums(String targetTime);

    /**
     * 根据部门ID和目标时间查询该部门下每个人的套餐具体办理流程
     *
     * @param deptId 部门ID
     * @param targetTime 目标时间
     * @return 每个人的套餐办理详情列表
     */
    public List<Map<String, Object>> getSalesmanPackageDetails(Long deptId, String targetTime);
}
